package com.drg.center.service;

import com.drg.center.entity.param.*;
import com.drg.center.entity.result.*;
import com.guaike.core.entity.result.PageEntity;
import com.guaike.core.entity.result.Result;

import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.List;


public interface DataMiningAnalysisService {
    /**
     * 数据质量分析
     *
     * @param param
     * @return
     */
    Result<DataQualityVO> dataQualityAnalysis(DataQualityDTO param);

    /**
     * 医疗服务能力
     *
     * @param param
     * @return
     */
    Result<MedicalServiceCapabilityVO> medicalServiceCapability(DataQualityDTO param);

    /**
     * 医疗服务质量
     *
     * @param param
     * @return
     */
    Result<DataMedicalServerqualityVO> medicalServiceQuality(@Valid DataQualityDTO param);

    /**
     * 科室服务效率
     *
     * @param param
     * @return
     */
    Result<List<DepartServiceEfficiencyPageVO>> departServiceEfficiency(DepartServiceEfficiencyDTO param);

    /**
     * 导出科室服务效率excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void exportDepartServiceEfficiencyExcel(HttpServletResponse response, DepartServiceEfficiencyDTO param) throws Exception;

    /**
     * 科室死亡率
     *
     * @param param
     * @return
     */
    Result<List<DepartDieRatePageVO>> departDieRate(DepartServiceEfficiencyDTO param);

    /**
     * 导出科室死亡率excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void exportDepartDieRateExcel(HttpServletResponse response, DepartServiceEfficiencyDTO param) throws Exception;

    /**
     * 医保标杆值分析列表
     *
     * @param param
     * @return
     */
    Result<List<MedicareBenchmarkingAnalysisPageVO>> medicalInsuranceBenchmarkingAnalysis(@Valid MedicalInsuranceBenchmarkingAnalysisDTO param);

    /**
     * 导出医保标杆值分析excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void medicalInsuranceBenchmarkingAnalysisExcel(HttpServletResponse response, MedicalInsuranceBenchmarkingAnalysisDTO param) throws Exception;

    /**
     * 患者结构分析
     *
     * @param param
     * @return
     */
    Result<PatientStructuralAnalysisVO> patientStructuralAnalysis(@Valid PatientStructuralAnalysisDTO param);

    /**
     * 患者就医成本分析列表
     *
     * @param param
     * @return
     */
    Result<PageEntity<PatientAccessCostsAnalysisPageVO>> patientAccessCostsAnalysis(@Valid PatientAccessCostsAnalysisDTO param);

    /**
     * 导出患者就医成本分析excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void patientAccessCostsAnalysisExcel(HttpServletResponse response, PatientAccessCostsAnalysisDTO param) throws Exception;


    /**
     * 综合分析列表
     *
     * @param param
     * @return
     */
    Result<List<ComprehensiveAnalysisPageVO>> comprehensiveAnalysis(ComprehensiveAnalysisDTO param);

    /**
     * 导出综合分析excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void comprehensiveAnalysisExcel(HttpServletResponse response, ComprehensiveAnalysisDTO param) throws Exception;

    /**
     * 超额排名分析列表
     *
     * @param param
     * @return
     */
    Result<List<OverRankingAnalysisPageVO>> overRankingAnalysis(OverRankingAnalysisDTO param);

    /**
     * 导出超额排名分析excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void overRankingAnalysisExcel(HttpServletResponse response, OverRankingAnalysisDTO param) throws Exception;

    Result<PageEntity<AuditResultsAnalysisPageVO>> auditResultsAnalysis(AuditResultsAnalysisDTO param);

    Result<PageEntity<SingleDiseaseHospitalizationCostAnalysisPageVO>> singleDiseaseHospitalizationCostAnalysis(SingleDiseaseHospitalizationCostAnalysisDTO param);
}
